/*
 * @author: smellcode
 * @time: 2008-3-10
 */
Ext.namespace('Ext.sail');

Ext.sail.GridPanel = Ext.extend(Ext.grid.GridPanel, {
    /*
     * 初始化
     */
    initComponent: function() {
        Ext.sail.GridPanel.superclass.initComponent.call(this);
    },
    
    /*
     * 设置数据源
     */
    setDataSource: function(dataSource) {
        this.reconfigure(dataSource, this.getColumnModel());
    },

    /*
     * 返回数据源
     */
    getDataSource: function() {
        return this.getStore();
    },

    /*
     * 设置数据源并重读
     */
    reloadDataSource : function(params, url) {
        var dataSource = this.getStore();
		dataSource.on('beforeload', function() {
            dataSource.baseParams = params;
            dataSource.proxy = new Ext.data.HttpProxy({url:url, method: "POST"})
		}, this);
		dataSource.reload();
	},        

    /*
     * 设置列模式
     */
    setColumnModel: function(columnModel) {
        this.reconfigure(this.getStore(), columnModel)
    },

    /*
     * 设置表格上方的工具栏
     * topToolbar 为一个数组[]，其中为widget的描述
     */
    setTopToolbar: function(topToolbar) {
        var tbar = this.getTopToolbar();
        Ext.each(tbar.items['items'], function(el) {
            el.destroy();
        });
        Ext.each(topToolbar, function(el) {
            tbar.add(el);        
        });
        tbar.show();
    },

    /*
     * 设置表格下方的工具栏
     * bottomToolbar 为一个数组[]，其中为widget的描述
     */
    setBottomToolbar: function(bottomToolbar) {
        var bbar = this.getBottomToolbar();
        Ext.each(bbar.items['items'], function(el) {
            el.destroy();
        });
        Ext.each(bottomToolbar, function(el) {
            bbar.add(el);        
        });
        bbar.show();
    },

    /*
     * 设置分页
     * 注意分页栏会占据表格上方或者下方工具栏的位置
     */
    setPagingBar: function(position) {
        var bar = eval('this.get' + position.substring(0,1).toUpperCase() + position.substring(1).toLowerCase() + 'Toolbar()');
        Ext.each(bar.items['items'], function(el) {
            el.destroy();
        });
        bar.add(new Ext.PagingToolbar({
            pageSize: 25,
            width: this.getInnerWidth(),
            store: this.getStore(),
            displayInfo: true
        }));
        bar.show();
    }
});

Ext.reg('sailGrid', Ext.sail.GridPanel);

